// 函数明后面的泛型是接收传入的数据类型 ,其他使用T的位置都是使用传入的数据类型
// function createArray<T>(length: number, value: T): Array<T> {
//   let result: T[] = []
//   for (let i = 0; i < length; i++) {
//     result[i] = value
//   }
//   return result
// }
// // 这里写的泛型是传入类型
// createArray<string>(3, 'x') // ['x', 'x', 'x']
// createArray<boolean>(3, false) // ['x', 'x', 'x']
// createArray<number>(3, 123) // ['x', 'x', 'x']

function swap<T, U>(tuple: [T, U]): [U, T] {
  return [tuple[1], tuple[0]]
}

swap<number, string>([7, 'seven']) // ['seven', 7]
